In the field of three-dimensional graphics, three-dimensional (3D) models of objects such as trees and plants, furniture, buildings, and the like may be arranged in a virtual scene or virtual environment. Various virtual light sources may be placed within the scene, along with a virtual camera, and a rendering engine can render a view (or multiple views in the case of multiple cameras) of the scene by simulating the interactions between the light sources, the models of the objects in the scene, and the virtual camera. One example of a 3D rendering technique is ray tracing.
The three-dimensional models may be generated using modeling software, where a user may, for example, assemble geometric primitives to form the shape of an object, or create and distort meshes of polygons that represent the surface of the modeled object. For example, 3D models may be generated using computer aided design (CAD) and computer aided modeling (CAM) software during a product design. For example, manufacturers of an industrial product may generate these models for design analysis and also for fabricating the product. The 3D models generated through these processes can also be used to demonstrate the product and its components. However, not all manufacturers produce 3D CAD/CAM models of their products and even if such models existed, they may not be available for use by others. Furthermore, the final product may have colors and textures that differ from the original 3D models that were created during design.
The way an object appears in a real-world environment depends on the position of the light sources, viewing position and the reflectance and transmittance properties of the object facing the camera or the viewer. For example, if the object has a matte texture (e.g., a suede shoe), then the color of the object may be substantially invariant with respect to the positions of the light sources and the position of the viewer (in other words, the object appears to be the same color from different angles)
However, if the surface of the object is glossy (e.g., a polished leather shoe), then the color may depend on the lighting and viewing angles (e.g., specular highlights may be visible from particular combinations of light source direction and viewer direction, and the color of the highlight may depend on the color of the light source). Therefore, the shape (or geometry) and color of an object alone do not provide the rendering engine with sufficient information to generate a realistic rendering.
In order to accurately depict objects made of different various types of materials or having different surface characteristics, the rendering engine uses various optical characteristics of the materials to simulate the interactions of the light with the object. In particular, an accurate rendering of a surface may take into account whether the object is glossy, semi-glossy, matte, dull, metallic, translucent, etc. The reflectance and scattering aspects of the optical characteristics of an object are sometimes represented as a bidirectional reflectance distribution function (BRDF) (see, e.g., Ward, G. J. 1992. Measuring and modeling anisotropic reflection. Comput. Graph. 26, 2, ACM SIGGRAPH (July), 265-272). The BRDF of an object may be different for different parts of an object. For example, some parts of a polished shoe may be scuffed, thereby causing the scuffed portions to appear more matte than glossy. As another example, different parts of the shoe (e.g., the sole versus the upper) may be made of different materials (e.g., rubber versus leather) and may therefore have different optical properties.